package pe.gob.mtpe.construcsys.mybatis.implementacion;


import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import pe.gob.mtpe.construcsys.bean.ComboBean;
import pe.gob.mtpe.construcsys.bean.ParamConsultaRetcc;
import pe.gob.mtpe.construcsys.bean.Persona;
import pe.gob.mtpe.construcsys.bean.Retcc;
import pe.gob.mtpe.construcsys.bean.Sindicato;
import pe.gob.mtpe.construcsys.mybatis.comun.MyBatisConnectionFactory;
import pe.gob.mtpe.construcsys.mybatis.interfase.INTRetcc;

public class IMPRetcc implements INTRetcc{
	
	private SqlSessionFactory sqlSessionFactory;
	
	public IMPRetcc(){
		sqlSessionFactory=MyBatisConnectionFactory.getSqlSessionFactory();
	}
	
	@Override
	public String insertarRetcc(Retcc retcc) throws Exception {
		SqlSession session = sqlSessionFactory.openSession();
		String mensaje="";
		try {
			session.insert("Retcc.insertarRetcc", retcc);
			session.commit();
		} catch (Exception e) {
			System.out.println("Error en IMPRetcc>insertarRetcc: "+e.getMessage());	
			mensaje=e.getMessage();	
			session.rollback();
		} finally {
			session.close();
		}
		return mensaje;
	}

	@Override
	public String actualizarRetcc(Retcc retcc) throws Exception {
		SqlSession session = sqlSessionFactory.openSession();
		String mensaje="";
		try {
			session.update("Retcc.actualizaRetcc", retcc);
			session.commit();
		} catch (Exception e) {
			System.out.println("Error en IMPRetcc>actualizaRetcc: "+e.getMessage());	
			mensaje=e.getMessage();	
			session.rollback();
		} finally {
			session.close();
		}
		return mensaje;
	}

	@Override
	public String eliminarRetcc(Retcc retcc) throws Exception {
		SqlSession session = sqlSessionFactory.openSession();
		String mensaje="";
		try {
			session.delete("Retcc.eliminarFisicoRetcc", retcc);
			session.commit();
		} catch (Exception e) {
			System.out.println("Error en IMPRetcc>eliminarFisicoRetcc: "+e.getMessage());	
			mensaje=e.getMessage();	
			session.rollback();
		} finally {
			session.close();
		}
		return mensaje;
	}

	@Override
	public List<Retcc>  listarRetcc(ParamConsultaRetcc parametro) throws Exception {
		SqlSession session=sqlSessionFactory.openSession();
		List<Retcc>  lista=new ArrayList<Retcc>();
		try {				
			lista=session.selectList("Retcc.consultaRetcc", parametro);		
		} catch (Exception e) {
			System.out.println("Error en IMPRetcc>listarRetcc: "+e.getMessage());			
		} finally {
			session.close();
		}
		return lista;
	}

	@Override
	public Retcc obtenerRetcc(ParamConsultaRetcc parametro) throws Exception {
		SqlSession session=sqlSessionFactory.openSession();
		Retcc  respuesta=new Retcc();
		try {				
			respuesta=session.selectOne("Retcc.consultaRetcc", parametro);		
		} catch (Exception e) {
			System.out.println("Error en IMPRetcc>obtenerRetcc: "+e.getMessage());			
		} finally {
			session.close();
		}
		return respuesta;
	}

	@Override
	public List<Sindicato> listarSindicato(Sindicato sindicato)
			throws Exception {
		SqlSession session=sqlSessionFactory.openSession();
		List<Sindicato>  lista=new ArrayList<Sindicato>();
		try {				
			lista=session.selectList("Retcc.lstSindicato", sindicato);		
		} catch (Exception e) {
			System.out.println("Error en IMPRetcc>listarSindicato: "+e.getMessage());			
		} finally {
			session.close();
		}
		return lista;
	}

	
	public String validaIns(ParamConsultaRetcc param) throws Exception {
		System.out.println("VALIDANDO INSERCION");
		String validacion = "";
 		Map parametros = new HashMap();
		parametros.put("v_codtdocide", param.getV_codtdocide());
		parametros.put("v_numdoc", param.getV_numdoc());
		parametros.put("flg_val",new String());
		
		SqlSession session = sqlSessionFactory.openSession();
		try {
			
			session.selectOne("Retcc.validaIns", parametros);
			validacion = (String)(parametros.get("flg_val"));
			
			System.out.println("validando: "+validacion);
			 
			return validacion;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		} finally {
			session.close();
		}
	}

	@Override
	public List<Map> emitirCarnet(Retcc retcc) throws Exception {
		SqlSession session=sqlSessionFactory.openSession();
		List<Map>  lista=new ArrayList<Map>();
		try {				
			lista=session.selectList("Retcc.emitirCarnet", retcc);	
			
		} catch (Exception e) {
			System.out.println("Error en IMPRetcc>emitirCarnet: "+e.getMessage());			
		} finally {
			session.close();
		}
		return lista;
	}

	@Override
	public String regFecInscRetcc(Retcc retcc) throws Exception {
		SqlSession session = sqlSessionFactory.openSession();
		String mensaje="";
		try {
			session.update("Retcc.regFecInscRetcc", retcc);
			session.commit();
		} catch (Exception e) {
			System.out.println("Error en IMPRetcc > regFecInscRetcc: "+e.getMessage());	
			mensaje=e.getMessage();	
			session.rollback();
		} finally {
			session.close();
		}
		return mensaje;
	}

	@Override
	public String renovarRetcc(Retcc retcc) throws Exception {
		System.out.println("RENOVANDO RETCC");
		String validacion = "";
 		Map parametros = new HashMap();
		parametros.put("p_n_corrtc", retcc.getnCorrtc());
		parametros.put("p_v_codusumod", retcc.getvCodusumod());
		parametros.put("p_v_hostmod", retcc.getvHostmod());
		parametros.put("flg_val",new String());
		
		SqlSession session = sqlSessionFactory.openSession();
		try {
			
			session.selectOne("Retcc.renovarRetcc", parametros);
			validacion = (String)(parametros.get("flg_val"));
			
			System.out.println("nuevo RETCC, codigo: "+validacion);
			 
			return validacion;
		} catch (Exception e) {
			System.out.println("error: ************* " + e.getMessage());
			return "error";
		} finally {
			session.close();
		}
	}

	@Override
	public List lstMotivoCancel() throws Exception {
		SqlSession session=sqlSessionFactory.openSession();
		List<ComboBean>  lista=new ArrayList<ComboBean>();
		try {				
			lista=session.selectList("Retcc.lstMotivoCancel");	
			
		} catch (Exception e) {
			System.out.println("Error en IMPRetcc > lstMotivoCancel: "+e.getMessage());			
		} finally {
			session.close();
		}
		return lista;
	}

	@Override
	public List lstDetMotivoCancel() throws Exception {
		SqlSession session=sqlSessionFactory.openSession();
		List<ComboBean>  lista=new ArrayList<ComboBean>();
		try {				
			lista=session.selectList("Retcc.lstDetMotivoCancel");	
			
		} catch (Exception e) {
			System.out.println("Error en IMPRetcc > lstDetMotivoCancel: "+e.getMessage());			
		} finally {
			session.close();
		}
		return lista;
	}

	@Override
	public String updCancelarRetcc(Retcc retcc) throws Exception {
		SqlSession session = sqlSessionFactory.openSession();
		String mensaje="";
		try {
			session.update("Retcc.updCancelarRetcc", retcc);
			session.commit();
		} catch (Exception e) {
			System.out.println("Error en IMPRetcc>updCancelarRetcc: "+e.getMessage());	
			mensaje=e.getMessage();	
			session.rollback();
		} finally {
			session.close();
		}
		return mensaje;
	}
	
	
	
}
